package com.sh.caryr.erp.service.impl;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.sh.caryr.erp.entity.enums.SkuRecordHandleType;
import com.sh.caryr.erp.entity.enums.SkuRecordOrderType;
import com.sh.caryr.erp.entity.stock.Sku;
import com.sh.caryr.erp.entity.stock.SkuRecord;
import com.sh.caryr.erp.entity.user.User;
import com.sh.caryr.erp.mapper.SkuRecordMapper;
import com.sh.caryr.erp.service.ISkuRecordService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * sku流水表 服务实现类
 * </p>
 *
 * @author milkeeper
 * @since 2017-12-01
 */
@Service
public class SkuRecordServiceImpl extends ServiceImpl<SkuRecordMapper, SkuRecord> implements ISkuRecordService {

    @Override
    public boolean insert(SkuRecord skuRecord, Long id, Float amount) {
        skuRecord.setSkuId(id);
        skuRecord.setHandleAmount(amount);
        return this.insert(skuRecord);
    }

    @Override
    public List<SkuRecord> findSkuRecordDynamic(Integer current, Integer size, Wrapper wrapper, String orderBy) {
        Page<SkuRecord> page = new Page<>(current, size);
        wrapper.orderBy(orderBy);
        List<SkuRecord> skuRecords = this.selectPage(page, wrapper).getRecords();
        return skuRecords;
    }

    @Override
    public boolean insert(Sku sku, User user, SkuRecordHandleType handleType) {
        SkuRecord skuRecord = SkuRecord.builder().skuId(sku.getId())
                .coco(sku.getCoco())
                .name(sku.getName())
                .code(sku.getCode())
                .remark(sku.getRemark())
                .handleBy(sku.getUpdateBy())
                .storageId(0L)
                .type(SkuRecordOrderType.WITHOUT)
                .handleType(handleType)
                .handleBy(user.getId())
                .usableAmount(sku.getUsableAmount())
                .notGoodAmount(sku.getNotGoodAmount())
                .lockedAmount(sku.getLockedAmount()).build();
        return this.insert(skuRecord);
    }

}
